https://tech.mercari.com/entry/2019/12/19/100000 これがめちゃよかったしまだ理解が浅い部分もある。
- ソースコードの依存性は、内側(上位レベルの方針)だけに向かっていなければいけない。 by Clean Architecture本
- レイヤー間で関心のある項目はそれぞれ違うため、同じ構造体を引き回すことはよろしくない
- とはいえそれぞれのレイヤーで構造体を定義すると、似たような構造体の詰替えが発生する
- レイヤー間の入出力はインターフェースを経由し、依存性を逆転する
- 呼び出し元のレイヤーでインターフェースを定義するのが良い。実装とインターフェースを同じパッケージに記述しているとパッケージを使い回すときに依存関係が複雑になる。
- 具象型はインターフェースを知るべきではない(実装者はコンパイラが通らないので知ることになる)
- ここで気になるところは入出力で全てにインターフェースを定義していると、もともと独立性が高かったモジュールに依存が発生する
- 呼び出される側がインターフェースの存在を知らないのであれば依存は薄い?そういうもの?
- 呼び出し元のレイヤーでインターフェースを定義するのが良い。実装とインターフェースを同じパッケージに記述しているとパッケージを使い回すときに依存関係が複雑になる。